﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using PSE.Deployment.SetupBase.Configuration;
using PSE.Deployment.SetupBase.Configuration.Actions;

namespace Deployment.Manager.Configuration
{
    [Serializable]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.Copy))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.CreateShortcut))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallAssembly))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallCertificate))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallWcfService))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallWindowsService))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.RegisterComponent))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.RegisterComponentWin32))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.UpdateConfig))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.UpdateWindowsRegistry))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallMessageQueue))]
    public class AutomationConfig 
    {
        public ApplicationGroup AdmUserGroup { get; set; }
        public List<SystemInfo> Systems { get; set; }
        public List<ActionBase> Actions { get; set; }
        public List<AssemblyInfo> BuildExecutionSteps { get; set; }
        public List<ReleaseGroup> ReleaseGroups { get; set; }

        public AutomationConfig()
        {
            Systems = new List<SystemInfo>();
            Actions = new List<ActionBase>();
            BuildExecutionSteps = new List<AssemblyInfo>();
            ReleaseGroups = new List<ReleaseGroup>();
        }
    }
}
